/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.edu.fatec.ads.bo;

import br.edu.fatec.ads.classes.Aluno;
import br.edu.fatec.ads.classes.Funcionario;
import br.edu.fatec.ads.classes.PessoaComplemento;
import br.edu.fatec.ads.dao.HibernateDAO;
import br.edu.fatec.ads.dao.HibernateGenericDAO;
import br.edu.fatec.ads.util.CriteriosUtil;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.hibernate.HibernateException;
import org.hibernate.criterion.Criterion;

/**
 *
 * @author Ubirajara
 */
public class BusinessObjectPessoaComplemento implements IBusinessObject{

    private HibernateDAO dao = null;

    public BusinessObjectPessoaComplemento() {
        dao = new HibernateGenericDAO(PessoaComplemento.class);
    }

    public void beginTransaction() {
        dao.beginTransaction();
    }

    public void commitTransaction() {
        dao.commitTransaction();
    }

    public void rollbackTransaction() {
        dao.rollbackTransaction();
    }

    public void clearSession() {
        dao.clearSession();
    }

    public Funcionario recuperarFuncionario(String login)
        throws HibernateException{
        Funcionario funcionario = null;
        Map<String, Object> criterios = new HashMap<String, Object>();
        Map<String, Object> campos = new HashMap<String, Object>();
        criterios.put(CriteriosUtil.CRITERIOS_OBJETO, campos);

        campos.put("login", login);

        List<PessoaComplemento> funcionarios = (List<PessoaComplemento>) dao.findByCriterion
                                                                    (CriteriosUtil
                                                                        .getInstance()
                                                                            .montaCriterios(criterios));

        if(funcionarios != null && !funcionarios.isEmpty()){
            funcionario = (Funcionario) funcionarios.get(0);
        }

        return funcionario;
    }

    public boolean verificaSenha(Funcionario funcionario, String senha){
        boolean validacao = false;
        
        if(funcionario != null){
            validacao = funcionario.getSenha().equals(senha);
        }

        return validacao;
    }

    public Aluno recuperarAluno(long codigoMatricula)
        throws HibernateException{
        Aluno alunoPesquisado = null;
        HibernateGenericDAO daoAluno = new HibernateGenericDAO(Aluno.class);

        Map<String, Object> criterios = new HashMap<String, Object>();
        Map<String, Object> campos = new HashMap<String, Object>();
        criterios.put(CriteriosUtil.CRITERIOS_OBJETO, campos);

        campos.put("matricula", codigoMatricula);

        List<Criterion> criteriosConvertidos = CriteriosUtil.getInstance().montaCriterios(criterios);

        List<Aluno> alunosRecuperados = (List<Aluno>) daoAluno.findByCriterion(criteriosConvertidos);

        if(alunosRecuperados != null && !alunosRecuperados.isEmpty()){
            alunoPesquisado = (Aluno) alunosRecuperados.get(0);
        }

        return alunoPesquisado;
    }
}